﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insifo.WE;
using System.Text.RegularExpressions;
using System.Collections.Specialized;


public partial class segGrupoEditar : ObjectPage
{
    #region CONSTANTES

    private const string RUTA_LISTA = "~/seg/segGrupoListar.aspx";

    #endregion

    #region PROPIEDADES

    public WCGrupo.BEGrupo Grupo
    {
        get { return (WCGrupo.BEGrupo)ViewState["GrupoDato"]; }
        set { ViewState["GrupoDato"] = value; }
    }

    #endregion PROPIEDADES
    
    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        //Eventos del Master
        Master.MenuAccionEvento += new MasterPageMenuEditarClickHandler(Master_MenuButton);
        if (!IsPostBack)
        {            
            Cargar();
        }
    }

    protected void Master_MenuButton(object sender, EventArgs e)
    {
        string strAccion = ((CommandEventArgs)e).CommandName;
        switch (strAccion)
        {
            case "Aceptar":
                Guardar("G");
                break;
            case "Aplicar":
                Guardar("A"); 
                break;
            case "Cancelar":
                Salir();
                break;
        }
    }

    #endregion

    #region METODOS

    protected void Cargar()
    {
        string strAccion =  Request.QueryString["a"];   //a: N-Nuevo, e-Editar, v-Ver
        string strId = Request.QueryString["i"];  //Id
        string strIdAp = Request.QueryString["ap"];  //Id de Aplicacion
        //Eventos Java Script
        this.Master.MenuAceptar.Attributes.Add("OnClick", "javascript:return fnValidar();");
        //Carga Aplicacion
        //Util.loadComboAndItem(ddlIdAplicacion, ListarAplicacion(), "Descripcion", "IdAplicacion", "--Seleccione--", "0");
        Util.loadComboAndItem(ddlIdAplicacion, ListarAplicaciones(), "Descripcion", "IdAplicacion", "Suit", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        //Carga Estado
        DataTable dt = ListarParametroDetalle(1, 1, Constantes.PARAMETRO_ESTADOREGISTRO);
        Util.loadCombo(ddlEstado, dt, "Descripcion", "ParametroDetalle");
        Util.loadCombo(ddlEstadoConcepto, dt, "Descripcion", "ParametroDetalle");
        lnkGeneral.HRef = string.Format("#{0}", tabGeneral.ClientID);
        lnkConcepto.HRef = string.Format("#{0}", tabConcepto.ClientID);

        switch (strAccion)
        {
            case "n":
                Master.SubTitulo.Text =  Resources.resDiccionario.Nuevo;
                Nuevo();
                break;
            case "e":
                Master.SubTitulo.Text =  Resources.resDiccionario.Editar;
                Editar(strAccion, strId, strIdAp);
                
                break;
            case "d":
                Master.SubTitulo.Text =  Resources.resDiccionario.Inactivar;
                Editar(strAccion, strId, strIdAp);
                break;
            default:
               Master.SubTitulo.Text =  Resources.resDiccionario.Unknow;
                break;
        }

        
    }

    protected void Nuevo()
    {
        hfIdGrupo.Value = "0";
        hfAccion.Value = "n"; //Nuevo
        txtIdGrupo.Text = string.Empty;
        txtIdGrupo.Enabled = false;
        txtDescripcion.Text = string.Empty;
        ddlIdAplicacion.SelectedIndex = 0; 
        
        //Datos de Auditoria
        ddlEstado.SelectedIndex = 0; //Representa el primero
        txtUsuarioCreacion.Text = string.Empty;
        txtFechaCreacion.Text = string.Empty;
        txtUsuarioModificacion.Text = string.Empty;
        txtFechaModificacion.Text = string.Empty;
    }

    protected void Editar(string pstrAccion, string pstrIdGrupo, string pstrIdAplicacion)
    {

        WCGrupo.BEGrupo be = new WCGrupo.BEGrupo
        {
            IdGrupo = Int32.Parse(pstrIdGrupo)
        };
        be = ObtenerGrupo(be);

        hfIdGrupo.Value = pstrIdGrupo;
        txtCodigo.Text = be.CodigoGrupo;
        hfIdAplicacion.Value = pstrIdAplicacion;
        hfAccion.Value = pstrAccion; //Editar/Eliminar
        txtIdGrupo.Text = hfIdGrupo.Value;
        txtIdGrupo.Enabled = false;
        ddlIdAplicacion.Enabled = false;
        txtDescripcion.Text = be.Descripcion;
        Util.SelectCombo(ddlIdAplicacion, be.IdAplicacion.ToString());
        
        cbxInterface.Checked = be.Interface.Equals("S");
        txtInterfaceTabla.Text = be.InterfaceTabla;
        txtInterfaceCodigo.Text = be.InterfaceCodigo;
        txtInterfaceDescripcion.Text = be.InterfaceDescripcion;
        hfInterface.Value = be.Interface;

        //txtInterfaceTabla.Enabled = false;
        //txtInterfaceCodigo.Enabled = false;
        //txtInterfaceDescripcion.Enabled = false;
        //if (cbxInterface.Checked)
        //{
        //    txtInterfaceTabla.Enabled = true;
        //    txtInterfaceCodigo.Enabled = true;
        //    txtInterfaceDescripcion.Enabled = true;
        //}
       
        //Datos de Auditoria
        Util.SelectCombo(ddlEstado, be.Estado);
        txtUsuarioCreacion.Text = be.UsuarioCreacion;
        txtFechaCreacion.Text = be.FechaCreacion.ToString(AppSettings.FormatoFechaHora);
        txtUsuarioModificacion.Text = be.UsuarioModificacion;
        txtFechaModificacion.Text = be.FechaModificacion.ToString(AppSettings.FormatoFechaHora);

        if (pstrAccion == "d")
        {
            Master.MenuAplicar.Visible = false; //Remueve el boton aplicar
            txtIdGrupo.Enabled = false;
            txtDescripcion.Enabled = false;
            ddlIdAplicacion.Enabled = false;
            ddlEstado.Enabled = false;

            if (be.Estado == Constantes.ESTADO_ACTIVO)
            {
                Util.SelectCombo(ddlEstado, Constantes.ESTADO_INACTIVO);
            }
            else
            {
                Util.SelectCombo(ddlEstado, Constantes.ESTADO_ACTIVO);
            }
        }

        //Listar Conceptos
        ListarConceptos();
    }

    protected bool Validar(out WCGrupo.BEGrupo pbe)
    {
        pbe = new WCGrupo.BEGrupo();
        string strDescripcion = string.Empty, strIdMenu = string.Empty;
        string strUsuario = string.Empty, strEstado = string.Empty, strIdAplicacion = string.Empty;
        string strAccion = string.Empty;

        strAccion = hfAccion.Value; //a: n-Nuevo, e-Editar, v-Ver

        strDescripcion = txtDescripcion.Text.Trim();
        strIdAplicacion = ddlIdAplicacion.SelectedValue;
        hfInterface.Value = cbxInterface.Checked ? Constantes.ESTADO_SI : Constantes.ESTADO_NO;
        strEstado = ddlEstado.SelectedValue;
        strUsuario = UsuarioSistema.CodigoUsuario;

        //Inicializa
        WCGrupo.BEGrupo be = new WCGrupo.BEGrupo
        {
            IdGrupo = Int32.Parse(hfIdGrupo.Value),
            CodigoGrupo = txtCodigo.Text.Trim(),
            Descripcion = strDescripcion,
            IdAplicacion = Int32.Parse(strIdAplicacion),
            Interface = cbxInterface.Checked ?  Constantes.ESTADO_SI  : Constantes.ESTADO_NO,
            InterfaceTabla = txtInterfaceTabla.Text,
            InterfaceDescripcion = txtInterfaceDescripcion.Text,
            InterfaceCodigo = txtInterfaceCodigo.Text,
            Estado = strEstado,
            UsuarioCreacion = strUsuario,
            FechaCreacion = DateTime.Now,
            UsuarioModificacion = strUsuario,
            FechaModificacion = DateTime.Now
        };
        pbe = be;
        return true;
    }

    protected void Guardar(string pstrEvento) //G:Grabar, A:Aplicar
    {
        string strAccion = string.Empty;
        string strUsuario = string.Empty;

        strAccion = hfAccion.Value; //a: n-Nuevo, e-Editar, v-Ver
        strUsuario = UsuarioSistema.CodigoUsuario;

        WCGrupo.BEGrupo be;
         
        if (!Validar(out be)) //Valida e Inicializa
        {
            return;
        }

        //Grabar
        switch (strAccion)
        {
            case "n": //Nuevo
                be = InsertarGrupo(be);
                if (be.Error != 0)
                {
                    if (be.Error == -2)
                    {
                        Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgAlertaCodigoYaExiste));
                    }
                    else
                    {
                       Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgErrorRegistrar));
                    }
                }
                else
                {
                    hfAccion.Value = "e";
                    hfIdGrupo.Value = be.IdGrupo.ToString();
                    txtIdGrupo.Text = be.IdGrupo.ToString();
                    txtUsuarioCreacion.Text = strUsuario;
                    txtFechaCreacion.Text = be.FechaCreacion.ToString(AppSettings.FormatoFechaHora);
                    txtUsuarioModificacion.Text = strUsuario;
                    txtFechaModificacion.Text = be.FechaCreacion.ToString(AppSettings.FormatoFechaHora);
                }
                
                break;
            case "e": //Actualiza
                be = ActualizarGrupo(be);
                if (be.Error != 0)
                {
                    if (be.Error == -2)
                    {
                        Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgAlertaCodigoYaExiste));
                    }
                    else
                    {
                        Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgErrorActualizar));
                    }
                }
                else
                {
                    txtUsuarioModificacion.Text = strUsuario;
                    txtFechaModificacion.Text = be.FechaModificacion.ToString(AppSettings.FormatoFechaHora);
                }
                break;
            case "d": //Elimina
                be = EliminaGrupo(be);
                if (be.Error != 0)
                {
                    Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgErrorActualizar));
                }
                txtUsuarioModificacion.Text = strUsuario;
                txtFechaModificacion.Text = be.FechaModificacion.ToString(AppSettings.FormatoFechaHora);

               
                break;
        }
        if (pstrEvento == "G") //Si es GRABAR redirecciona a la Lista
        {
            if (be.Error == 0)
            {
                Salir();
            }
        }
    }

    protected void Salir()
    {
        string strCadena = string.Format("?a=l&param1={0}", HttpUtility.UrlDecode(Request.QueryString["param1"]));
        Util.Redireciona(RUTA_LISTA, strCadena, true);
    }
    
    #endregion

    #region TAB CONCEPTOS

    protected void ibtNuevoConcepto_Click(object sender, ImageClickEventArgs e)
    {
        NuevoConcepto();
    }

    protected void ibtImportarConcepto_Click(object sender, ImageClickEventArgs e)
    {
        ImportarConceptos();
    }
    protected void lvConcepto_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        ConceptoOperacion(e.CommandName, e.Item);
    }

    protected void lvConcepto_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        BoundConcepto(e.Item);
    }

    protected void ddlEstadoConcepto_SelectedIndexChanged(object sender, EventArgs e)
    {
        ListarConceptos();
    }

    protected void ListarConceptos()
    {
        int intTotalFilas = 0, intFilasXPagina = 0;
        //Obtiene lo ultimos no eliminados  
        WCConcepto.BEConcepto[] arrNuevo = null;
        arrNuevo = ListarConceptos(int.Parse(hfIdGrupo.Value), "", ddlEstadoConcepto.SelectedValue, ucpagListaConceptos.NumeroPagina);

        lvConcepto.DataSource = arrNuevo;
        lvConcepto.DataBind();
        if (arrNuevo.Length > 0)
        {
            intFilasXPagina = arrNuevo[0].FilasXPagina;
            intTotalFilas = arrNuevo[0].TotalFilas;
        }
        ucpagListaConceptos.TotalRegistros = intTotalFilas;
        ucpagListaConceptos.RegistrosPorPagina = intFilasXPagina;
        ucpagListaConceptos.EnlazarPaginador();
    }

    protected void NuevoConcepto()
    {
        DataSet ds = new DataSet();
        lvConcepto.EditIndex = -1;
        lvConcepto.InsertItemPosition = InsertItemPosition.LastItem;
        ListarConceptos();
        lblNuevoDetalle.Visible = false;
        ibtNuevoConcepto.Visible = false;
    }

    protected void ConceptoOperacion(string pstrComando, ListViewItem plviObj)
    {
        switch (pstrComando)
        {
            case Constantes.ACCION_GRABARNUEVO:
                GrabarConceptoNuevo(plviObj);
                break;
            case Constantes.ACCION_EDITAR:
                EditarConcepto(plviObj);
                break;
            case Constantes.ACCION_GRABAR:
                GrabarConcepto(plviObj);
                break;
            case Constantes.ACCION_CANCELAR:
                CancelarConcepto();
                break;
            case Constantes.ACCION_ELIMINAR:
                EliminarConcepto(plviObj);
                break;
        }
    }

    protected void GrabarConceptoNuevo(ListViewItem plceArg)
    {
        //Crear un item:
        TextBox txtDetalleInsertIdConcepto = (TextBox)plceArg.FindControl("txtDetalleInsertIdConcepto");
        TextBox txtDetalleInsertCodigoConcepto = (TextBox)plceArg.FindControl("txtDetalleInsertCodigoConcepto");
        TextBox txtDetalleInsertDescripcion = (TextBox)plceArg.FindControl("txtDetalleInsertDescripcion");
        DropDownList ddlDetalleInsertEstado = (DropDownList)plceArg.FindControl("ddlDetalleInsertEstado");

        WCConcepto.BEConcepto be = new WCConcepto.BEConcepto
        {
            RefGuid = Guid.NewGuid().ToString(),
            IdGrupo = int.Parse(hfIdGrupo.Value),
            CodigoConcepto = txtDetalleInsertCodigoConcepto.Text.Trim(),
            Descripcion = txtDetalleInsertDescripcion.Text.Trim(),
            Estado = ddlDetalleInsertEstado.SelectedValue,
            RefAccion = WCConcepto.DbTipoAccion.Insertar,
            UsuarioCreacion = UsuarioSistema.CodigoUsuario,
        };

        InsertarConcepto(be);
        //// Cancela el modo de Insersion de ventana
        CancelarModoInsertar();
        //// Listar el Detalle 
        ListarConceptos();
    }

    protected void GrabarConcepto(ListViewItem plceArg)
    {

        //Obtiene los valres ingresados
        HiddenField hfDetalleEditIdConcepto = (HiddenField)plceArg.FindControl("hfDetalleEditIdConcepto");
        TextBox txtDetalleEditCodigo = (TextBox)plceArg.FindControl("txtDetalleEditCodigoConcepto");
        TextBox txtDetalleEditDescripcion = (TextBox)plceArg.FindControl("txtDetalleEditDescripcion");
        DropDownList ddlDetalleEditEstado = (DropDownList)plceArg.FindControl("ddlDetalleEditEstado");

        WCConcepto.BEConcepto be = new WCConcepto.BEConcepto
        {
            IdGrupo = int.Parse(hfIdGrupo.Value),
            IdConcepto = int.Parse(hfDetalleEditIdConcepto.Value),
            CodigoConcepto = txtDetalleEditCodigo.Text.Trim(),
            Descripcion = txtDetalleEditDescripcion.Text.Trim(),
            Estado = ddlDetalleEditEstado.SelectedValue,
            UsuarioModificacion = UsuarioSistema.CodigoUsuario,
            
        };

        ActualizarConcepto(be);

        lvConcepto.EditIndex = -1;

        //// Cancela el modo de Insersion
        CancelarModoInsertar();

        //// Listar el Detalle de Salida
        ListarConceptos();
    }

    protected void EliminarConcepto(ListViewItem plceArg)
    {
  
        HiddenField hfDetalleItemIdConcepto = (HiddenField)plceArg.FindControl("hfDetalleItemIdConcepto");
        HiddenField hfDetalleItemEstado = (HiddenField)plceArg.FindControl("hfDetalleItemEstado");
        WCConcepto.BEConcepto be = new WCConcepto.BEConcepto
        {
            IdGrupo = int.Parse(hfIdGrupo.Value),
            IdConcepto = int.Parse(hfDetalleItemIdConcepto.Value),
            Estado = hfDetalleItemEstado.Value == Constantes.ESTADO_ACTIVO ? Constantes.ESTADO_INACTIVO : Constantes.ESTADO_ACTIVO,
            UsuarioModificacion = UsuarioSistema.CodigoUsuario,
        };

        EliminarConcepto(be);

        lvConcepto.EditIndex = -1;

        //// Listar el Detalle de Salida
        ListarConceptos();
    }

    protected void EditarConcepto(ListViewItem plceArg)
    {
        lvConcepto.EditIndex = plceArg.DataItemIndex;
        HiddenField hfDetalleItemGui = (HiddenField)plceArg.FindControl("hfDetalleItemGui");
        // Listar Detalle
        ListarConceptos();
    }

    protected void CancelarConcepto()
    {
        lvConcepto.EditIndex = -1;
        CancelarModoInsertar();
        // Listar Detalle
        ListarConceptos();
    }

    protected void BoundConcepto(ListViewItem plceArg)
    {
        if (plceArg.ItemType == ListViewItemType.DataItem)
        {
            ImageButton ibt = (ImageButton)plceArg.FindControl("ibtEliminarItemContacto");
            string strEstado = DataBinder.Eval(plceArg.DataItem, "Estado").ToString();
            if (ibt != null)
            {
                if (strEstado == Constantes.ESTADO_ACTIVO)
                {
                    ibt.ImageUrl = Constantes.ESTADO_ACTIVO_URL;
                    ibt.ToolTip = "Inactivar";
                }
                else
                {
                    ibt.ImageUrl = Constantes.ESTADO_INACTIVO_URL;
                    ibt.ToolTip = "Activar";
                }
            }
        }
    }

    protected void CancelarModoInsertar()
    {
        lvConcepto.InsertItemPosition = InsertItemPosition.None;
        lblNuevoDetalle.Visible = true;
        ibtNuevoConcepto.Visible = true;
    }


    protected void ucpagListaConceptos_CambioPagina(object sender, EventArgs e)
    {
        ListarConceptos();
    }

    protected void ImportarConceptos()
    {
        if (cbxInterface.Checked)
        {
            WCGrupo.BEGrupo be = new WCGrupo.BEGrupo()
            {
                IdGrupo = int.Parse(hfIdGrupo.Value),
                Interface = Constantes.ESTADO_SI,
                InterfaceCodigo = txtInterfaceCodigo.Text.Trim(),
                InterfaceTabla = txtInterfaceTabla.Text.Trim(),
                InterfaceDescripcion = txtInterfaceDescripcion.Text.Trim(),
                Estado = Constantes.ESTADO_ACTIVO,
                UsuarioCreacion = UsuarioSistema.CodigoUsuario

            };
            be = ImportarConcepto(be);
            if (be.Error == 0)
            {
                ListarConceptos();
                Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgAlertaAccionEjecutadaOK));
            }
            else
            {
                Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgErrorImportarConcepto));
            }

        }
    }

    #endregion TAB CONCEPTOS


    #region LLAMDAS A WEBSERVICES

    /// <summary>
    /// Método Lista Niveles de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCGrupo.BEGrupo InsertarGrupo(WCGrupo.BEGrupo pbe)
    {
        WCGrupo.BEGrupo be = new WCGrupo.BEGrupo();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCGrupo.IWCGrupo>("BasicHttpBinding_IWCGrupo"))
        {
            var response = client.ServiceOperation<WCGrupo.BEGrupo>(c => c.Insertar(pbe));
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Obtiene Nivel de Alerta
    /// </summary>
    /// <returns>Devuelve un Objeto</returns>
    protected WCGrupo.BEGrupo ObtenerGrupo(WCGrupo.BEGrupo pbe)
    {
        WCGrupo.BEGrupo be = new WCGrupo.BEGrupo();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCGrupo.IWCGrupo>("BasicHttpBinding_IWCGrupo"))
        {
            var response = client.ServiceOperation<WCGrupo.BEGrupo>(
               c => c.Obtener(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Actualiza un Nivele de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCGrupo.BEGrupo ActualizarGrupo(WCGrupo.BEGrupo pbe)
    {
        WCGrupo.BEGrupo be = new WCGrupo.BEGrupo();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCGrupo.IWCGrupo>("BasicHttpBinding_IWCGrupo"))
        {
            var response = client.ServiceOperation<WCGrupo.BEGrupo>(
               c => c.Actualizar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Elimina un Nivele de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCGrupo.BEGrupo EliminaGrupo(WCGrupo.BEGrupo pbe)
    {
        WCGrupo.BEGrupo be = new WCGrupo.BEGrupo();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCGrupo.IWCGrupo>("BasicHttpBinding_IWCGrupo"))
        {
            var response = client.ServiceOperation<WCGrupo.BEGrupo>(
               c => c.Eliminar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Lista Menus
    /// </summary>
    /// <returns>Devuelve un dataTable</returns>
    protected DataTable ListarGrupo()
    {
        WCGrupo.BEGrupo be = new WCGrupo.BEGrupo();
        be.IdAplicacion = 0;
        be.Descripcion = "";
        be.Estado = "A";
        be.Pagina = 0;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCGrupo.IWCGrupo>("BasicHttpBinding_IWCGrupo"))
        {
            var response = client.ServiceOperation<DataTable>(
               c => c.Listar(be).Tables[0]
               );
            ;
            dt = response;
        }
        return dt;
    }

    /// <summary>
    /// Método Lista Companias
    /// </summary>
    /// <returns>Devuelve un dataTable</returns>
    protected DataTable ListarParametroDetalle(int pintidCompania, int pintIdAplicacion, string pstrParametro)
    {
        WCParametroDetalle.BEParametroDetalle be = new WCParametroDetalle.BEParametroDetalle();
        be.IdCompania = pintidCompania;
        be.IdAplicacion = pintIdAplicacion;
        be.Parametro = pstrParametro;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCParametroDetalle.IWCParametroDetalle>("BasicHttpBinding_IWCParametroDetalle"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.Listar(be).Tables[0]);
            dt = response;
        }
        return dt;
    }

    protected DataTable ListarAplicacion()
    {
        DataTable dt = new DataTable();
        //WCAplicacion.BEAplicacion beAp = new WCAplicacion.BEAplicacion();
        //beAp.IdSuit = 0;
        //beAp.Descripcion = string.Empty;
        //beAp.Estado = "A";
        //beAp.Pagina = 0;
        using (var client = new ServiceClient<WCAplicacion.IWCAplicacion>("BasicHttpBinding_IWCAplicacion"))
        {
            var response = client.ServiceOperation<DataTable>(
                c => c.Listar().Tables[0]
                    );
            ;
            dt = response;
        }
        return dt;
    }

    /// <summary>
    /// Método Lista Niveles de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCConcepto.BEConcepto[] ListarConceptos( int pinIdGrupo, string pstrCodigoConcepto, string pstrEstado, int pinPagina)
    {
        WCConcepto.BEConcepto be = new WCConcepto.BEConcepto();
        
        be.IdGrupo = pinIdGrupo;
        be.CodigoConcepto = pstrCodigoConcepto;
        be.Estado = pstrEstado;
        be.Pagina = pinPagina;
        WCConcepto.BEConcepto[] arr = null;
        using (var client = new ServiceClient<WCConcepto.IWCConcepto>("BasicHttpBinding_IWCConcepto"))
        {
            var response = client.ServiceOperation<WCConcepto.BEConcepto[]>(c => c.Listar(be));
            arr = response;
        }
        return arr;
    }

    /// <summary>
    /// Método Lista Niveles de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCConcepto.BEConcepto InsertarConcepto(WCConcepto.BEConcepto pbe)
    {
        WCConcepto.BEConcepto be = new WCConcepto.BEConcepto();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCConcepto.IWCConcepto>("BasicHttpBinding_IWCConcepto"))
        {
            var response = client.ServiceOperation<WCConcepto.BEConcepto>(c => c.Insertar(pbe));
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Actualiza un Nivele de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCConcepto.BEConcepto ActualizarConcepto(WCConcepto.BEConcepto pbe)
    {
        WCConcepto.BEConcepto be = new WCConcepto.BEConcepto();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCConcepto.IWCConcepto>("BasicHttpBinding_IWCConcepto"))
        {
            var response = client.ServiceOperation<WCConcepto.BEConcepto>(
               c => c.Actualizar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Elimina un Nivele de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCConcepto.BEConcepto EliminarConcepto(WCConcepto.BEConcepto pbe)
    {
        WCConcepto.BEConcepto be = new WCConcepto.BEConcepto();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCConcepto.IWCConcepto>("BasicHttpBinding_IWCConcepto"))
        {
            var response = client.ServiceOperation<WCConcepto.BEConcepto>(
               c => c.Eliminar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }


    /// <summary>
    /// Método Elimina un Nivele de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCGrupo.BEGrupo ImportarConcepto(WCGrupo.BEGrupo pbe)
    {
        WCGrupo.BEGrupo be = new WCGrupo.BEGrupo();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCGrupo.IWCGrupo>("BasicHttpBinding_IWCGrupo"))
        {
            var response = client.ServiceOperation<WCGrupo.BEGrupo>(c => c.ImportarConcepto(pbe));
            be = response;
        }
        return be;
    }


    protected DataTable ListarAplicaciones()
    {

        WCAplicacion.BEAplicacion be = new WCAplicacion.BEAplicacion();
        be.Estado = "A";

        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCAplicacion.IWCAplicacion>("BasicHttpBinding_IWCAplicacion"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.Listar().Tables[0]);
            dt = response;
        }
        return dt;
    }
    #endregion


}